/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modulo3;

import Modelo.Inspeccion;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import Acceso.Security;

/**
 *
 * @author Patricia
 */
public class modificarInspeccionAction extends org.apache.struts.action.Action {

    /* forward name="success" path="" */
    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    private static final String[] ALLOWED = {"Administrador","Gestionar Inspecciones"};

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        if (!Security.validateSession(request, ALLOWED)) {
            Security.privilegeError(response);
            return mapping.findForward("errorPriv");
        }

        modificarInspeccionForm formBean = (modificarInspeccionForm) form;
        ActionErrors errors = new ActionErrors();
        boolean error = false;

        String numeroInspeccion = formBean.getNumeroInspeccion();
        String fechaInspeccion = formBean.getFechaInspeccion();
        String motivo = formBean.getMotivo();
        String nombreEmpresa = formBean.getNombreEmpresa();
        String rifEmpresa = formBean.getRifEmpresa();
        String nroDeInspectores = formBean.getNroDeInspectores();
        String nroSalidaCampo = formBean.getNroSalidaCampo();
        String recomendaciones = formBean.getRecomendaciones();
        String descripcion = formBean.getDescripcion();
        String actividad = formBean.getActividad();
        String tipoInspeccion = formBean.getTipoInspeccion();

        if (fechaInspeccion == null || fechaInspeccion.equals("")) {
            errors.add("fechaInspeccion_insp_requerido", new ActionMessage("errors.fechaInspeccion_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }
        if (motivo == null || motivo.equals("")) {
            errors.add("motivo_insp_requerido", new ActionMessage("errors.motivo_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }
        if (tipoInspeccion == null || tipoInspeccion.equals("")) {
            errors.add("tipoInspeccion_insp_requerido", new ActionMessage("errors.tipoInspeccion_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        } else if(tipoInspeccion.equals("Externa")){

            if (nombreEmpresa == null || nombreEmpresa.equals("")) {
                errors.add("nombreEmpresa_insp_requerido", new ActionMessage("errors.nombreEmpresa_insp_requerido"));
                saveErrors(request, errors);
                error = true;
            }
            if (rifEmpresa == null || rifEmpresa.equals("")) {
                errors.add("rifEmpresa_insp_requerido", new ActionMessage("errors.rifEmpresa_insp_requerido"));
                saveErrors(request, errors);
                error = true;
            }
        }
        if (nroDeInspectores == null && !nroDeInspectores.equals("")) {
            errors.add("nroDeInspectores_insp_requerido", new ActionMessage("errors.nroDeInspectores_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }
        if (nroSalidaCampo == null && !nroSalidaCampo.equals("")) {
            errors.add("nroSalidaCampo_insp_requerido", new ActionMessage("errors.nroSalidaCampo_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }
        if (descripcion == null || descripcion.equals("")) {
            errors.add("descripcion_insp_requerido", new ActionMessage("errors.descripcion_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }

        if (actividad == null || actividad.equals("")) {
            errors.add("actividad_insp_requerido", new ActionMessage("errors.actividad_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }
        if (recomendaciones == null || recomendaciones.equals("")) {
            errors.add("recomendaciones_insp_requerido", new ActionMessage("errors.recomendaciones_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }

        if (error) {
            return mapping.findForward(FAILURE);
        }

        Inspeccion ins = new Inspeccion();
        ins.setNumeroInspeccion(numeroInspeccion);
        ins.setFechaInspeccion(fechaInspeccion);
        ins.setMotivo(motivo);
        ins.setTipoInspeccion(tipoInspeccion);
        ins.setNombreEmpresa(nombreEmpresa);
        ins.setRifEmpresa(rifEmpresa);
        ins.setDescripcion(descripcion);
        ins.setActividad(actividad);
        ins.setRecomendaciones(recomendaciones);
        ins.setNroDeInspectores(nroDeInspectores);
        ins.setNroSalidaCampo(nroSalidaCampo);

        if (Modelo.DAL.Inspeccion_DAO.actualizarInspeccion(ins)) {
            return mapping.findForward(SUCCESS);
        } else {
            return mapping.findForward(FAILURE);
        }
    }
}
